import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: lenovo
 * Date: 2022-05-01
 * Time: 10:15
 */
public class TestDemo {
    public static void main(String[] args) {
        int i = 15;//0000 1111
        //从后往前
        //偶数位
        for (int j = 31; j >= 1; j-=2) {
            System.out.print(((i>>j)&1)+" ");
        }
        System.out.println();
        //奇数位
        for (int j = 30; j >= 0 ; j-=2) {
            System.out.print(((i>>j)&1)+" ");
        }
    }






    public static void main9(String[] args) {
        int n = 15;
        int count = 0;//记数器，用来记1的个数
        while(n !=0 ){
            n = n&(n-1);
            count++;
        }
        System.out.println(count);
    }










    //15: 0000 1111
    //右移四次后为0
    public static void main8(String[] args) {
        int n = 15;
        // int n = -1
        int count = 0;
            while(n != 0){
                if(((n)&1) == 1){//>>>无符号右移，符号位补0，这样就可以正确的计算出-1二进制位中1的个数
                    count++;
                }
                n >>>= 1;
            }
        System.out.println(count);
    }




//写一个函数返回参数二进制中1的个数
    //15: 0000 1111 & 1
    //按位与==》找1
public static void main7(String[] args) {
    int i = 15;
    int count =  0;
    for (int j = 0; j < 32; j++) {
        if(((i>>j)&1)==1){
            count++;
        }
    }
    System.out.println(count);
}





//编写程序数一下 1到 100 的所有整数中出现多少个数字9
    //个位数为9；09 19 29 39 49 59 69 79 89 99
    //十位数为9: 90 91 92 93 94 95 96 97 98 99
public static void main6(String[] args) {
    int count = 0;
    for (int i = 1; i <= 100 ; i++) {
        //个位数为9
        if(i%10 == 9){
            count++;
        }
        //十位数为9
        else if(i/10 == 9){
            count++;
        }
    }
    System.out.println(count);
}



    //打印乘法口诀表
    public static void main5(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(i+"*"+j+"=" +i*j+" ");
            }
            System.out.println();
        }
    }

    //判断一个数字是否是素数
    public static void isPrime(int n){
        int i = 2;
        for (; i < Math.sqrt(n); i++) {
            if(n % i == 0){
                break;
            }
        }
        if(i > Math.sqrt(n)){
            System.out.println(n+"是素数");
        }else{
            System.out.println(n+"不是素数");
        }
    }
    public static void main4(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNextInt()){
            int n = in.nextInt();
            isPrime(n);
        }
    }





    public static void main3(String[] args) {
        int j;
        for (int i = 2; i <= 100; i++) {
            for ( j = 2; j <= Math.sqrt(i); j++) {//两种情况跳出for循环：1.j >  Math.sqrt(i)  ； 2.进入if语句遇到break跳出循环
                if(i%j == 0){
                    break;
                }
            }
            //1. j> Math.sqrt(i)是素数 2.i%j == 0，不是素数
            if(j>Math.sqrt(i)){
                System.out.print(i);
                System.out.print(" ");
            }

        }
    }


    public static void main2(String[] args) {
        int j;
        for (int i = 2; i <= 100; i++) {
            for ( j = 2; j <= i/2; j++) {//两种情况跳出for循环：1.j > i/2  ； 2.进入if语句遇到break跳出循环
                if(i%j == 0){
                    break;
                }
            }
            //1. j>i/2 是素数 2.i%j == 0，不是素数
            if(j>i/2){
                System.out.print(i);
                System.out.print(" ");
            }

        }
    }








//打印素数
    public static void main1(String[] args) {
        boolean flag = true;
        for (int i = 2; i <= 100 ; i++) {
            flag = true;//这里将flag又赋值为true很重要，因为如果后面flag=false后，就已经判断完一个数字，新的数字又需要重新判断
            for (int j = 2; j < i; j++) {
                if(i % j == 0) {
                    flag = false;
                }
            }
            if(flag == true){
                System.out.print(i);
                System.out.print(" ");
            }
        }
    }
}
